package game.Enemty;

import javax.swing.*;
import java.awt.*;

/**
 * 奖励物品类，代表游戏中可被角色获取的奖励项
 * 包含奖励的位置、图像、分数等信息，并处理奖励的动画和交互逻辑
 */
public class Award implements Runnable {
    public int x, y; // 奖励物品的坐标
    int score; // 奖励分数
    Image image = new ImageIcon("img/award/1.gif").getImage(); // 奖励图像资源
    public int upTime = 0, jumpTime = 1; // 动画时间控制参数
    Thread newThread = new Thread(this); // 控制奖励行为的线程
    public Obstacle id; // 关联的障碍物对象
    public int width = 40, height = 40; // 奖励物品的宽高尺寸


    public Award(int y, int x, int score, Obstacle id) {
        newThread.start();
        this.score = score;
        this.y = y;
        this.x = x;
        this.id = id;
    }

    /**
     * 角色触碰奖励时触发的方法
     * 设置奖励上升的时间计数器
     */
    public void touch() {
        upTime = 10;
    }

    /**
     * 实现奖励物品的上升动画效果
     */
    public void moveUp() {
        y -= 5; // 向上移动5个像素
        if (upTime == 0) {
            jumpTime = 0; // 如果上升时间结束，则停止跳跃
        }
    }

    @Override
    public void run() {
        while (true) {
            if (upTime != 0 && jumpTime != 0) {
                upTime--; // 减少上升时间计数器
                moveUp(); // 执行上升动画
            }
            try {
                Thread.sleep(50); // 线程休眠以控制动画速度
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}